FileReader

FileReader是H5中的WebAPI,它允许Web应用应用程序异步读取存储在用户计算机中的文件(或原始数据缓冲区)的内容,使用FileBlob对象指定要读取的文件或数据。

构造函数

FileReader()返回一个新构造的FileReader

属性

FileReader.error 表示在读取文件过程中发生的错误

FileReader.readyState表示FileReader状态的数字

常量名 描述
EMPTY 0 还没有加载任何数据
LOADING 1 数据正在被加载
DONE 2 已完成全部的读取请求

FileReader.result文件的内容,该属性只有在读取操作完成后才生效,数据格式取决于启动读取操作的方式。

事件

FileReader.onabort处理abort事件。该事件在读取操作被中断时触发。

FileReader.onerror处理error事件。该事件在读取操作发生错误时触发。

FileReader.onload处理onload事件。该事件在读取操作完成时触发。

FileReader.onloadstart处理loadstart事件。该事件在读取操作开始时触发。

FileReader.onloadend处理loadend事件。该事件在读取操作结束时触发。(无论成功或失败)

FileReader.onprogress处理progress事件。该事件在读取Blob时触发。(在读取操作过程中持续触发)

注:由于FileReader继承自EventTarget,所以所有这些事件也可以通过addEventListener方法使用。

方法

FileReader.abort()

中止读取操作。在返回时,readyState属性为DONE

FileReader.readAsArrayBuffer()

开始读取指定的Blob内容,一旦完成,result属性中保存的将是被读取文件的ArrayBuffer数据对象。

FileReader.readAsBinaryString()

开始读取指定的Blob内容,一旦完成,result属性中将包含所读取文件的原始二进制数据。

FileReader.readAsDataURL()

开始读取指定的Blob内容,一旦完成,result属性中将包含一个data:URL格式的字符串以表示所读取文件的内容。

FileReader.readAsText()

开始读取指定的Blob内容,一旦完成,result属性中将包含一个字符串以表示所读取的文件内容。

代码示例

当我们想实现一个上传文件即时预览图片的功能时,就可利用FileReader函数

let oFile = document.querySelector('#my_file') // 文件dom
let oImg = document.querySelector('#my_img') // 图片dom
oFile.onchange = function(){
    let fr = new FileReader()
    // 文件可以上传多个,利用 multiple,所以files是个类数组
    fr.readAsDataURL(oFile.files[0]) 
    fr.onload = function(){
        oImg.src = fr.result
    }
}
1
2
3
4
5
6
7
8
9
10
上次更新: 8/3/2019, 7:10:53 PM